www.gusucode.com > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序 > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序/NSCT/threshold.m

    % ./还是/
%%%%%%%%%%%%%I(new)=I+w*s%%%%%%%%%%%%%%%%%%%%%%
function I=threshold(x,y,z,n)

%x为多光谱图像,y为SAR图像,n为窗口大小
a(1:n,1:n)=1;
[height, width]=size(x);   %输入图像是hightxwidth的,且hight>n,width>n  
x1=double(x); 
y1=double(y);
I=z;
%x2=x1;  
for i=1:height-n+1  
    for j=1:width-n+1  
        c1=x1(i:i+(n-1),j:j+(n-1)).*a; %取出I分量中从(i,j)开始的n行n列元素与模板相乘  
        s1=sum(sum(c1));                 %求c1矩阵中各元素之和  
        meanI=s1/(n*n);                %求I分量的局部均值
        PCI=x1(i+(n-1)/2,j+(n-1)/2);   %取I分量的PC
        
        c2=y1(i:i+(n-1),j:j+(n-1)).*a; %取出SAR分量中从(i,j)开始的n行n列元素与模板相乘
        s2=sum(sum(c2));                 %求c2矩阵中各元素之和 
        meanS=s2/(n*n);                %求SAR分量的局部均值
        PCS=y1(i+(n-1)/2,j+(n-1)/2);   %取SAR分量的PC
        
        %%%%%%%%%%%%%计算公式%%%%%%%%%%%
        if(PCS>0.3&&PCI<0.5)
            w=PCI./PCS*meanI./meanS;
            m=0;
        else
            w=0;
            m=1;
        end
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        I(i+(n-1)/2,j+(n-1)/2)=m*I(i+(n-1)/2,j+(n-1)/2)+w*y(i+(n-1)/2,j+(n-1)/2);          %I(new)=m*I+w*s
    end  
end